//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.baomidou.mybatisplus.samples.tenant.handler;

import java.util.List;

import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.operators.relational.ItemsList;
import net.sf.jsqlparser.schema.Column;

/**
 * 多租户处理器
 */
public interface PlusTenantLineHandler {
    /**
     * 查询时，设置的租户值, 可以设置多个指。如 select xxx tenant_id in (8888, 1)
     */
    ItemsList selectTenantId();

    /**
     * 插入更新数据时，设置的租户值, 如： update user set is_delete = 0 where tenant_id = xxxxx
     */
    Expression insertTenantId();

    /**
     * 是否忽略租户查询
     */
    default Boolean ignore(String method) {
        return false;
    }

    /**
     * 租户字段名
     */
    default String getTenantIdColumn() {
        return "tenant_id";
    }

    /**
     * 忽略表格
     */
    default boolean ignoreTable(String tableName) {
        return false;
    }

    default boolean ignoreInsert(List<Column> columns, String tenantIdColumn) {
        return columns.stream().map(Column::getColumnName).anyMatch((i) -> {
            return i.equalsIgnoreCase(tenantIdColumn);
        });
    }
}
